import 'dart:async';
import 'dart:io';

main() {
  print('程序开始');
  Future(() async {
    try {
      // 登陆
      String token = await login(username: 'admin', password: '123456');
      print('登陆成功，token是$token');
      // 获取用户信息
      Map userInfo = await getUserInfo(token: token);
      print('用户信息是$userInfo');
      // 保存用户信息
      await saveUserInfo(userInfo: userInfo);
      print('用户信息保存成功');
    } catch (err) {
      print('登陆失败:$err');
    } finally {
      print('不管成功失败,都会执行finally');
    }
  });
  print('不能堵塞的代码');
}

// 登陆成功 ，返回token
Future<String> login({required String username, required String password}) {
  return Future(() {
    sleep(Duration(seconds: 2));
    return 'token123';
  });
}

// 根据token 获取用具信息
Future<Map> getUserInfo({required String token}) {
  return Future(() {
    sleep(Duration(seconds: 2));
    return {"name": "张三", "age": 18};
  });
}

//保存用户信息
Future saveUserInfo({required Map userInfo}) {
  return Future(() {
    sleep(Duration(seconds: 2));
    print('保存用户信息成功');
  });
}
